package cn.tedu;

import java.util.*;

public class Test1 {
    public static void main(String[] args) {
        List l = new ArrayList();
        //特点: 有序,可重复,存null,有索引
        l.add(66);
        l.add(88.8);
        l.add(88.8);
        l.add(null);
        l.add(null);//有返回值
        System.out.println(l.contains(4));
        Object[] o = l.toArray();
        System.out.println(Arrays.toString(o));

        //void add(int index, E element)
        //在列表的指定位置插入指定元素（可选操作）。
        l.add(1, 99);//没有返回值
        System.out.println(l);

        // E get(int index)
        // 返回列表中指定位置的元素
        System.out.println(l.get(3));
        //int indexOf(Object o)
        // 返回此列表中第一次出现的指定元素的索引；如果此列表不包含该元素，则返回 -1。
        System.out.println(l.indexOf(88.8));

        System.out.println(l.lastIndexOf(88.8));

        //l.remove(2);    移除2索引出的元素 //拿着基本类型的当做索引
        System.out.println(l.remove(2) + "``");//打印移除的元素
        System.out.println(l);

        //移除66这个元素
        //拿着包装类型的66当做集合里的元素
        // l.remove(new Integer(66));    //移除集合里的元素66
        System.out.println(l.remove(new Integer(66)));//移除集合里的元素66是否成功
        System.out.println(l);

        System.out.println(l.set(3, 99));
        System.out.println(l);

        //List<E> subList(int fromIndex, int toIndex)
        //返回列表中指定的 fromIndex（包括 ）和 toIndex（不包括）之间的部分视图
        System.out.println(l.subList(1, 3));

        Iterator i = l.iterator();
        while (i.hasNext()) {
            //TODO 如果取到null调用null.XXX一定会报空指针异常NullPointerException,
            //加一个判断条件可以有效的防止空指针异常
            if (i != null) {
                Object ob = i.next();
                System.out.println(ob + "~~~");
            }
        }
            ListIterator i2 = l.listIterator();
            while (i2.hasNext()) {
                Object ob = i2.next();
                System.out.println(ob + "??");
            }
            //逆向迭代--前提是:   必须先顺序迭代一遍在进行逆向迭代 不用
        /*while (i2.hasPrevious()) {
            Object ob = i2.previous();
            System.out.println(ob+"~~~");
        }*/

            for (int j = 0; j < l.size(); j++) {
                Object oo = l.get(j);
                System.out.println(oo + "@@");
            }

            for (Object x : l) {
                System.out.println(x);
            }
        }
    }

